import utils from "../utils.js";

const callbackify = (fn, reducer) => {
    return utils.isAsyncFn(fn) ? function (...args) {
        const cb = args.pop();
        fn.apply(this, args).then((value) => {
            try {
                reducer ? cb(null, ...reducer(value)) : cb(null, value);
            } catch (err) {
                cb(err);
            }
        }, cb);
    } : fn;
}

export default callbackify;
